package util

import "regexp"

func IsValidPhoneNumber(phoneNumber string) bool {
	// 定义手机号的正则表达式
	regex := `^1[3456789]\d{9}$`

	// 编译正则表达式
	regexPattern := regexp.MustCompile(regex)

	// 使用正则表达式匹配手机号
	isValid := regexPattern.MatchString(phoneNumber)

	return isValid
}

func IsValidEmail(email string) bool {
	// 定义邮箱地址的正则表达式
	regex := `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`

	// 编译正则表达式
	regexPattern := regexp.MustCompile(regex)

	// 使用正则表达式匹配邮箱地址
	isValid := regexPattern.MatchString(email)

	return isValid
}

func ContainsSpaceAndSpecialChars(str string) bool {
	// 定义包含空格和特殊字符的正则表达式
	regex := `[\s\p{P}]`

	// 编译正则表达式
	regexPattern := regexp.MustCompile(regex)

	// 使用正则表达式查找匹配项
	matches := regexPattern.FindStringSubmatch(str)

	// 如果有匹配项，则表示字符串包含空格或特殊字符
	return len(matches) > 0
}

func IsValidPassword(password string) bool {
	// 验证密码长度为6到18位，包含大小写英文字母和数字
	regex := regexp.MustCompile(`^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{6,18}$`)

	return regex.MatchString(password)
}

func Trim(src string) (dist string) {
	if len(src) == 0 {
		return
	}

	r, distR := []rune(src), []rune{}
	for i := 0; i < len(r); i++ {

		if r[i] == 10 || r[i] == 32 {
			continue
		}

		distR = append(distR, r[i])
	}

	dist = string(distR)
	return
}
